﻿#region File Description
//  XAEnima 
//  License: GNU/GPL
//  Developer: Federico Leonardo Motta
//  File description: This component handles files.
#endregion

#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate;
using SharedContent;
#endregion


namespace XAEnima.Core.GameManager
{
    class FileManager
    {
        /// <summary>
        /// Il FileManager si occupa di caricare/salvare/cancellare file di testo/xml.
        /// Ad esempio i file con i profili degli utenti o i file opzioni.
        /// </summary>
        
        // Sovraccarico il metodo DoSave per funzionare con gli oggetti SharedOptions
        public void DoSave(StorageDevice device, SharedOptions opt) {
            XmlWriterSettings xmlSettings = new XmlWriterSettings();
            xmlSettings.Indent = true;
            // Creo l'oggetto XmlWriter che creerà/scriverà il file nella cartella dei contenuti (bin/debug/x86)
            using (XmlWriter xmlWriter = XmlWriter.Create("Content/Config.xml", xmlSettings))
            {
                // Creo un oggetto serializzatore
                XmlSerializer serializer = new XmlSerializer(typeof(SharedOptions));
                // Salvo l'oggetto SharedOptions formattato, coi tag xml
                serializer.Serialize(xmlWriter, opt);
            }
        }

        

        public SharedOptions GetOptions(StorageDevice device)
        {
            SharedOptions opt = new SharedOptions();
            XmlReaderSettings xmlSettings = new XmlReaderSettings();

            // Crewo un oggetto XmlReader 
            using (XmlReader xmlReader = XmlReader.Create("Content/Config.xml", xmlSettings)) {

                // Creo l'oggetto serializzatore
                XmlSerializer serializer = new XmlSerializer(typeof(SharedOptions));
                // Deserializzare il file Xml in un oggetto SharedOptions
                opt = (SharedOptions)serializer.Deserialize(xmlReader);
            }
    
            return opt;
        }

        
    }
}
